﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsApp1.IICMoudle
{
    public static class HexDataProcessor
    {
      ///   <param name = "hexStrArray" > 十六进制字符串数组（如["4D", "01", "4D", "01"]）</param>
    /// <returns>拼接后的整数数组（如[333, 333]）</returns>
    /// <exception cref="ArgumentException">输入格式错误时抛出</exception>
    public static int[] ProcessHexArray(string[] hexStrArray)
        {
            // 校验输入数组有效性
            if (hexStrArray == null || hexStrArray.Length == 0)
                throw new ArgumentException("输入的十六进制字符串数组不能为空");

            // 1. 拼接数组为完整十六进制字符串（如["4D", "01"] → "4D01"）
            string hexStr = string.Join("", hexStrArray);

            // 2. 转换为字节数组（使用自定义扩展方法）
            byte[] dataBytes = hexStr.ToHexBytes();

            // 3. 校验字节数是否为偶数（需成对拼接）
            if (dataBytes.Length % 2 != 0)
                throw new ArgumentException("十六进制字符串数组对应的字节数为奇数，无法按高低字节拼接");

            // 4. 按“低字节在前、高字节在后”规则拼接为整数数组
            int[] result = new int[dataBytes.Length / 2];
            for (int i = 0; i < result.Length; i++)
            {
                int byteIndex = i * 2;
                byte lowByte = dataBytes[byteIndex];      // 低字节（前）
                byte highByte = dataBytes[byteIndex + 1]; // 高字节（后）
                result[i] = (highByte << 8) | lowByte;    // 拼接公式
            }

            return result;
        }

        /// <summary>
        /// 计算拼接后整数数组的总和
        /// </summary>
        /// <param name="hexStrArray">十六进制字符串数组</param>
        /// <returns>所有拼接后整数的总和</returns>
        //public static int CalculateTotal(string[] hexStrArray)
        //{
        //    int[] values = ProcessHexArray(hexStrArray);
        //    int total = 0;
        //    foreach (int val in values)
        //    {
        //        total += val;
                
        //    }
        //    return total;
        
    }
}
